// pages/mine/suggest/suggest.js
const aboutMap = { 0: '首页', 1: '健享', 2: '咨询', 3: '甄选', 4: '其他' };
const aboutMapReverse = { '首页': 0, '健享': 1, '咨询': 2, '甄选': 3, '其他': 4 };

Page({
  /**
   * 页面的初始数据
   */
  data: {
    desc: '',
    phone: '',
    images: [],
    maxImages: 15,
    activeTab: 0,
    suggestList: [],
    page: 1,
    pageSize: 10,
    hasMore: true,
    loading: false,
    userId: null, // 添加用户ID字段
    selectedPage: '首页',
    feedbackTab: '首页',
    filteredSuggestList: [] // 当前tab下的留言
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    // 获取用户ID，这里假设从全局状态或缓存中获取
    const userId = wx.getStorageSync('userId');
    this.setData({ userId });
    // 初始加载留言列表
    this.getSuggestList(true);
    // 可在此处加载历史留言
    this.filterSuggestList();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    if (this.data.activeTab === 1) {
      this.setData({ page: 1, hasMore: true });
      this.getSuggestList(true);
      wx.stopPullDownRefresh();
    }
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {
    if (this.data.activeTab === 1 && this.data.hasMore) {
      this.getSuggestList();
    }
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 监听问题描述输入
  onDescInput(e) {
    this.setData({ desc: e.detail.value });
  },

  // 监听手机号输入
  onPhoneInput(e) {
    this.setData({ phone: e.detail.value });
  },

  // 获取本地文件列表
  getLocalImages() {
    const fs = wx.getFileSystemManager();
    const userPath = wx.env.USER_DATA_PATH;
    fs.readdir({
      dirPath: userPath,
      success: res => {
        // 过滤出图片文件
        const imageFiles = res.files.filter(file => /\.(jpg|jpeg|png|gif)$/i.test(file));
        // 拼接完整路径
        const imagePaths = imageFiles.map(file => `${userPath}/${file}`);
        // 这里可以弹窗让用户选择，或直接全部加入
        this.setData({
          images: this.data.images.concat(imagePaths).slice(0, this.data.maxImages)
        });
      },
      fail: err => {
        wx.showToast({ title: '读取本地图片失败', icon: 'none' });
      }
    });
  },

  // 图片预览
  previewImage(e) {
    const index = e.currentTarget.dataset.index;
    wx.previewImage({
      current: this.data.images[index],
      urls: this.data.images
    });
  },

  // 删除图片
  removeImage(e) {
    const index = e.currentTarget.dataset.index;
    const images = this.data.images;
    images.splice(index, 1);
    this.setData({ images });
  },

  // 上传单张图片，返回Promise
  uploadImage(filePath) {
    return new Promise((resolve, reject) => {
      wx.uploadFile({
        url: 'https://your-server.com/upload', // 替换为你的图片上传接口
        filePath,
        name: 'file',
        success: (res) => {
          // 假设返回 { url: '图片地址' }
          const data = JSON.parse(res.data);
          resolve(data.url);
        },
        fail: reject
      });
    });
  },

  // 表单提交
  submit() {
    const { desc, phone, selectedPage, userId } = this.data;
    if (!desc) {
      wx.showToast({ title: '请填写问题描述', icon: 'none' });
      return;
    }
    if (!phone) {
      wx.showToast({ title: '请填写手机号', icon: 'none' });
      return;
    }
    // 手机号格式校验：11位数字
    if (!/^1\d{10}$/.test(phone)) {
      wx.showToast({ title: '请输入正确的手机号', icon: 'none' });
      return;
    }
    if (!userId) {
      wx.showToast({ title: '请先登录', icon: 'none' });
      return;
    }

    console.log('userId for submit:', userId, typeof userId);

    // 构建请求数据
    const feedbackData = {
      userId: parseInt(userId),
      content: desc,
      about: aboutMapReverse[selectedPage],
      phone: phone
    };

    wx.request({
      url: 'http://localhost:8080/feedbacks',
      method: 'POST',
      header: {
        'content-type': 'application/json'
      },
      data: feedbackData,
      success: (res) => {
        console.log('提交响应:', res.data);
        if (res.data.success) {
          wx.showToast({ title: '提交成功', icon: 'success' });
          // 清空表单
          this.setData({
            desc: '',
            phone: '',
            selectedPage: '首页'
          });
          // 刷新留言列表
          if (this.data.activeTab === 1) {
            this.getSuggestList(true);
          }
        } else {
          wx.showToast({ 
            title: res.data.message || '提交失败', 
            icon: 'none' 
          });
        }
      },
      fail: (err) => {
        console.error('提交留言失败:', err);
        wx.showToast({ 
          title: '提交失败，请稍后重试', 
          icon: 'none' 
        });
      }
    });
  },

  // tab切换
  onTabChange(e) {
    const index = Number(e.currentTarget.dataset.index);
    this.setData({
      activeTab: index
    });
    if (index === 1) {
      // 切换到留言列表时重置分页参数并刷新
      this.setData({ page: 1, hasMore: true }, () => {
        this.getSuggestList(true);
      });
    }
  },

  // 获取留言列表
  getSuggestList(isRefresh = false) {
    if (this.data.loading || !this.data.hasMore) return;
    this.setData({ loading: true });

    wx.request({
      url: 'http://localhost:8080/feedbacks',
      method: 'GET',
      success: (res) => {
        console.log('获取留言列表响应:', res.data);
        if (res.data.success) {
          const feedbackList = res.data.data.map(item => ({
            id: item.id,
            desc: item.content,
            phone: item.phone,
            page: aboutMap[Number(item.about)] || '其他'
          }));

          this.setData({
            suggestList: isRefresh ? feedbackList : this.data.suggestList.concat(feedbackList),
            hasMore: feedbackList.length === this.data.pageSize,
            loading: false
          }, () => {
            this.filterSuggestList();
          });
        } else {
          wx.showToast({ 
            title: res.data.message || '获取数据失败', 
            icon: 'none' 
          });
          this.setData({ loading: false });
        }
      },
      fail: (err) => {
        console.error('获取留言列表失败:', err);
        wx.showToast({ 
          title: '获取数据失败，请稍后重试', 
          icon: 'none' 
        });
        this.setData({ loading: false });
      }
    });
  },

  onPageSelect(e) {
    this.setData({
      selectedPage: e.currentTarget.dataset.page
    });
  },

  onFeedbackTabChange(e) {
    this.setData({
      feedbackTab: e.currentTarget.dataset.page
    }, () => {
      this.filterSuggestList();
    });
  },

  filterSuggestList() {
    const { suggestList, feedbackTab } = this.data;
    console.log('feedbackTab:', feedbackTab);
    console.log('suggestList:', suggestList);
    const filteredList = suggestList.filter(item => item.page === feedbackTab);
    console.log('筛选后:', filteredList);
    this.setData({
      filteredSuggestList: filteredList
    });
  },

  // 跳转到留言列表页面
  goToSuggestList() {
    wx.navigateTo({
      url: '/pages/mine/suggestList/suggestList'
    });
  }
})